我是Docker和GCP的新手。我遵循此处给出的说明
我的docker-compose.yml文件看起来像:
version: '3'
services:
backend:
image: com.xyz.backend:v1
build: ./server/
ports:
- "5000:5000"
volumes:
- ./server:/usr/src/app
- /usr/src/app/node_modules
frontend:
image: com.xyz.frontend:v1
build: ./client/
ports:
- "3000:3000"
volumes:
- ./client:/usr/src/app
- /usr/src/app/node_modules
links:
- backend
docker file =>客户端/dockerfile:
FROM node:8.15.0-alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ENV NODE_PATH=/node_modules
ENV PATH=$PATH:/node_modules/.bin
COPY package.json /usr/src/app
RUN npm i -g npm-check-updates
RUN ncu -u
RUN npm install
COPY . /usr/src/app
ENV PORT 3000
EXPOSE 3000
RUN pwd
CMD ["npm", "start"]
docker file =>服务器/dockerfile
FROM node:8.15.0-alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ENV NODE_PATH=/node_modules
ENV PATH=$PATH:/node_modules/.bin
RUN npm install -g nodemon
COPY package.json /usr/src/app
RUN npm i -g npm-check-updates
RUN ncu -u
RUN npm install
COPY . /usr/src/app
ENV PORT 5000
EXPOSE 5000
RUN pwd
CMD ["npm", "start"]
cloudbuild.yaml
steps:
- name: ‘docker/compose:1.23.2’
args: [‘up’, ‘-d’]
- name: 'gcr.io/cloud-builders/docker'
args: ['tag', 'workspace_app:latest', 'gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA']
images: ['gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA']
项目结构:
Project
↳ client
↳ Dockerfile
server
↳ Dockerfile
README.md
Dockerfile
cloudbuild.yaml
docker-compose.yml
当我尝试在GCP中运行此操作时,没有抛出任何错误,但我无法使用公共IP访问。
当我本地运行时,它运行良好。
我使用以下命令
运行Dockerdocker run -v /var/run/docker.sock:/var/run/docker.sock -v "$PWD:$PWD" -w="$PWD" docker/compose:1.23.2 up
我尝试设置端口也喜欢:
docker run -v /var/run/docker.sock:/var/run/docker.sock -v "$PWD:$PWD" -w="$PWD" -p 8080:3000 docker/compose:1.23.2 up
找不到问题所在。请指教..预先感谢。
在我看来就像防火墙问题。
当您的应用程序使用端口3000和5000时,您遵循的示例会听到端口80上的连接。GCP带有一组默认的防火墙规则,其中可以访问某些标准协议(例如HTTP)的端口,但是您需要创建一个新的防火墙以允许应用程序的相关端口访问。
。查看有关为特定端口创建防火墙规则的答案。