xtr*_*tra 5 docker docker-compose gatsby
我正在尝试通过Docker Compose运行Gatsby。据我了解,Gatsby站点正在我的docker容器中运行。
我将容器的端口8000映射到我的本地主机上的端口8000。但是,在浏览时,localhost:8000我无法获得我的盖茨比站点。
我使用以下内容Dockerfile来构建图像docker build -t nxtra/gatsby .:
FROM node:8.12.0-alpine
WORKDIR /project
COPY ./package.json /project/package.json
COPY ./.entrypoint/entrypoint.sh /entrypoint.sh
RUN apk update \
&& apk add bash \
&& chmod +x /entrypoint.sh \
&& npm set progress=false \
&& npm install -g yarn gatsby-cli
EXPOSE 8000
ENTRYPOINT [ "/entrypoint.sh" ]
Run Code Online (Sandbox Code Playgroud)
entrypoints.sh 包含:
#!/bin/bash
yarn install
gatsby develop
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml与 docker-compose up
version: '3.7'
services:
gatsby:
image: nxtra/gatsby
ports:
- "8000:8000"
volumes:
- ./:/project
tty: true
Run Code Online (Sandbox Code Playgroud)
docker ps显示端口8000已转发0.0.0.0:8000->8000/tcp。
检查我的容器以docker inspect --format='{{.Config.ExposedPorts}}' id确认端口的暴露-> map[8000/tcp:{}]
docker tops 容器上的表示容器中正在运行以下进程:
18465 root 0:00 {entrypoint.sh} /bin/bash /entrypoint.sh
18586 root 0:11 node /usr/local/bin/gatsby develop
18605 root 0:00 /usr/local/bin/node /project/node_modules/jest-worker/build/child.js
18637 root 0:00 /bin/bash
Run Code Online (Sandbox Code Playgroud)
Dockerfile和docker-compose.yml位于我的Gatsby项目的根目录中。在没有docker的情况下运行我的项目时,它运行正常gatsby develop。
要使在我的容器中运行的Gatsby网站在localhost:8000上可见,我在做什么?
我的问题是,盖茨比只在听容器中的请求,就像这个答案所暗示的那样。确保为主机配置了Gatsby 0.0.0.0。以这个(有点hacky)设置为例:
Docker文件
FROM node:alpine
RUN npm install --global gatsby-cli
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml
version: "3.7"
services:
gatsby:
build:
context: .
dockerfile: Dockerfile
entrypoint: gatsby
volumes:
- .:/app
develop:
build:
context: .
dockerfile: Dockerfile
command: gatsby develop -H 0.0.0.0
ports:
- "8000:8000"
volumes:
- .:/app
Run Code Online (Sandbox Code Playgroud)
您可以从容器中运行Gatsby命令:
docker-compose run gatsby info
或运行开发服务器:
docker-compose up develop
| 归档时间: |
|
| 查看次数: |
2718 次 |
| 最近记录: |