我有这样的应用程序结构:
react-client
server
docker-compose.yaml
Run Code Online (Sandbox Code Playgroud)
golang 服务器通常在 docker 中启动。现在我想在那里运行反应。这是我的 docker 文件react-client
FROM node:alpine
WORKDIR /app/react
COPY package.json /app/react
COPY package-lock.json /app/react
COPY . /app/react
EXPOSE 3001
RUN npm i
CMD ["npm", "run", "start"]
Run Code Online (Sandbox Code Playgroud)
我的 docker-compose 文件:
version: '3'
services:
postgres:
image: postgres:12
restart: always
ports:
- '5432:5432'
volumes:
- ./db_data:/var/lib/postgresql/data
- ./server/scripts/init.sql:/docker-entrypoint-initdb.d/create_tables.sql
env_file:
- ./server/config/.env
healthcheck:
test: [ "CMD", "pg_isready", "-q", "-d", "devdb", "-U","postgres" ]
timeout: 45s
interval: 10s
retries: 10
redis:
image: redis:6.2
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 6379:6379
prometheus:
image: "prom/prometheus:v2.21.0"
ports:
- "9090:9090"
command:
- "--config.file=/etc/prometheus/prometheus.yml"
volumes:
- "./server/metrics/prometheus.yml:/etc/prometheus/prometheus.yml:ro"
grafana:
image: grafana/grafana:6.1.6
environment:
- GF_AUTH_DISABLE_LOGIN_FORM=true
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_ANONYMOUS_ORG_NAME=Main Org.
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
- GF_USERS_ALLOW_SIGN_UP=false
ports:
- "3000:3000"
volumes:
- ./grafana/provisioning:/etc/grafana/provisioning
- ./grafana/dashboards:/var/lib/grafana/dashboards
web-client:
build:
context: ./react-client
dockerfile: Dockerfile
ports:
- "3001:3001"
app:
build:
context: ./server
dockerfile: Dockerfile
ports:
- 8080:8080
depends_on:
- postgres
- redis
Run Code Online (Sandbox Code Playgroud)
现在,当你启动 docker 时,当我进入时,localhost:3001我收到一个错误:
ERR_EMPTY_RESPONSE。
我不知道出了什么问题。如果我在没有反应的情况下运行 docker 并通过它运行它,npm start那么一切都会正常。也许不知何故整个项目都没有被复制?
编辑
我尝试这样做
web-client:
build:
context: ./react-client
dockerfile: Dockerfile
ports:
- "127.0.0.1:3001:3001"
Run Code Online (Sandbox Code Playgroud)
但一切都没有改变
我在端口 3000 上单独启动了反应,并且启动正常。显然在端口 3001 上启动时发生了某种错误,但不清楚出了什么问题
我建议你为react-client构建一个镜像并手动启动一个容器。首先更改你的 Dockerfile:
FROM node:alpine
WORKDIR /app/react
COPY . .
EXPOSE 3001
RUN npm i
CMD ["npm", "run", "start"]
Run Code Online (Sandbox Code Playgroud)
docker build -t test .docker run -d --name mytest -p 3001:3001 testdocker logs mytestdocker run --rm test ash -c "find /app/react -type f -print0 | xargs -0 ls -t"| 归档时间: |
|
| 查看次数: |
1079 次 |
| 最近记录: |