Skip to content
This repository was archived by the owner on Mar 11, 2026. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions examples/HydrogenWithDocker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# GET
FROM node:18 AS build-env
# Add all files in the current directory to the app
ADD . /app

WORKDIR /app
# Install required depedencies.
RUN yarn
# Generate build
RUN yarn build --target node
#
FROM gcr.io/distroless/nodejs:18 AS run-env
# Set environment variable.
ENV NODE_ENV production

COPY --from=build-env /app /app

EXPOSE ${PORT:-8080}

WORKDIR /app
# Entry point
CMD ["dist/node/index.js"]
34 changes: 34 additions & 0 deletions examples/HydrogenWithDocker/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@

**What this is**

This folder contains required files for deploying a Hydrogen based storefront on EC2.

**Pre-requisites**

* Working installations of docker. Follow this guide to install Docker on Ubuntu https://docs.docker.com/engine/install/ubuntu/.
* Valid `Dockerfile` which can generate a build. Refer to `Dockerfile` in the folder.
* Use`ngnix.conf`



# Docker Related Command


* View Docker Logs for a container
```
sudo docker logs --follow <container_id>
```


* Run the Docker container

```
sudo docker run --restart unless-stopped -e ENV_VAR_NAME=ENV_VAR_VALUE -p 8080:8080 -d --name <container_name> <image_name>

```

* Log into docker container

```
sudo docker exec -it <container_id> bash
```
51 changes: 51 additions & 0 deletions examples/HydrogenWithDocker/ngnix.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
upstream app{
server 127.0.0.1:8080;
server 127.0.0.1:8081;

}


server {
server_name <website_url> ;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
root /var/www/client;
try_files $uri @docker;
expires max;
add_header Cache-Control "public";
}

location @docker {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://app;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}



listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/<website_url>/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/<website_url>/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}



server {
if ($host = <website_url>) {
return 301 https://$host$request_uri;
} # managed by Certbot

server_name <website_url> ;

listen 80;
return 404; # managed by Certbot

}