Anda tahu saya sekarang mencoba membangun web dalam satu wadah buruh pelabuhan dan menggunakan volume untuk mendapatkan dist setelah membangun, dan memulai wadah nginx untuk menyebarkan folder dist. Ini adalah skrip penulisan buruh pelabuhan:

version: '3'
services:
  jump-ui-build:
    image: node:12.13.0
    volumes:
      - ~/jump-ui:/usr/local/app
    working_dir: /usr/local/app
    ports:
      - 8082:8082
    command: bash -c "npm install && npm run build:test"

  nginx:
    restart: always
    image: nginx:1.16.1
    ports: 
      - 80:80
      - 443:443
    volumes:
      - ~/jump-ui/dist:/usr/share/nginx/html
      - ~/nginx-log:/var/log/nginx
    depends_on:
      - jump-ui-build

Layanan jump-ui-build berjalan dan selesai dengan sukses dan menghasilkan folder dist di bawah folder jump-ui, tetapi ketika saya mencoba "docker exec -it" untuk mengakses layanan nginx dan beralih ke /usr/share/nginx/html, ini adalah folder kosong, jadi saya harus memulai layanan jump-ui-build secara manual dan memulai layanan nginx, dan berhasil disebarkan?

Apakah ada cara untuk memodifikasi skrip yum agar saya berhasil membangun dan menyebarkan web secara otomatis?

1
colapuro 28 Oktober 2019, 07:20

1 menjawab

Jawaban Terbaik

Anda dapat menggunakan multistage Dockerfile:

FROM node:12.13.0
WORKDIR /usr/local/app
RUN bash -c "npm install && npm run build:test"

FROM nginx:1.16.1
COPY --from=0 /usr/local/app /usr/share/nginx/html
EXPOSE 80 443

Dengan cara ini Anda akan mendapatkan satu gambar nginx, buatlah:

docker build -t my_image .

Komposisi Anda harus:

nginx:
    restart: always
    image: my_image
    ports: 
      - 80:80
      - 443:443
    volumes:
      - $HOME/nginx-log:/var/log/nginx
2
LinPy 28 Oktober 2019, 06:45