• สร้าง Dockerfile_vuejs
# base image
FROM node:14.17.6

# set working directory
WORKDIR /app

# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH

# install and cache app dependencies
COPY package.json /app/package.json
RUN npm install
RUN npm install @vue/cli@3.7.0 -g

# start app
CMD ["npm", "run", "serve"]
  • สร้าง Dockerfile_fastapi
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7
RUN pip install requests
RUN pip install SQLAlchemy
RUN pip install mysql-connector-python
RUN pip install fastapi-sessions
RUN pip install itsdangerous
  • สร้าง file docker-compose.yml
version: '3.7'

services:

  appvuejs:
    container_name: appvuejs
    build:
      context: .
      dockerfile: Dockerfile_vuejs
    volumes:
      - '.:/app'
      - './node_modules:/app/node_modules'
    logging:
      driver: "json-file"
      options:
        max-size: 10m
        max-file: "5"
    ports:
      - '8081:8080'
    networks:
      - custom_network

  api:
    build:
      context: .
      dockerfile: Dockerfile_fastapi
    volumes:
      - ./api:/app
    ports:
      - 8113:80
    logging:
      driver: "json-file"
      options:
        max-size: 10m
        max-file: "5" 
    entrypoint: ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80", "--workers","2","--reload"]
    networks:
      - custom_network

  db:
    image: mysql:8
    #restart: always
    entrypoint: ['/entrypoint.sh', '--default-authentication-plugin=mysql_native_password']
    command: --sql_mode=""
    volumes:
      - ./mysql/data/:/var/lib/mysql
    environment:
      - MYSQL_USER_ROOT=root
      - MYSQL_ROOT_PASSWORD=7eGsbXNz
      - MYSQL_DATABASE=app
      - MYSQL_USER=admin
      - MYSQL_PASSWORD=7eGsbXNz
    networks:
      - custom_network

  pma:
    image: phpmyadmin/phpmyadmin
    #restart: always
    links:
      - db
    environment:
      - MYSQL_USERNAME=admin
      - MYSQL_ROOT_PASSWORD=7eGsbXNz
      #- PMA_ARBITRARY=1
      - PMA_HOST=db
    depends_on:
      - db
    ports:
      - "8114:80"
    networks:
      - custom_network
networks:
  custom_network:
    external:
      name: nginx-network

run command

# docker-compose build

# docker-compose up -d