Docker
Пример файла DockerFile, который нужен, чтобы сбилдить image (образ) докера:
1) Вариант для бекенда (koa):
FROM node:14 WORKDIR /app COPY package*.json ./ COPY . /app RUN npm install ARG PORT ARG DB_NAME ARG DB_USER ARG DB_PASS ARG DB_HOST ARG SECRET_KEY ARG SECRET_KEY_REFRESH ARG accessKeyId ARG secretAccessKey ARG userPhotoFolder ARG bucketName ENV PORT=$PORT ENV DB_NAME=$DB_NAME ENV DB_USER=$DB_USER ENV DB_PASS=$DB_PASS ENV DB_HOST=$DB_HOST ENV SECRET_KEY=$SECRET_KEY ENV SECRET_KEY_REFRESH=$SECRET_KEY_REFRESH ENV accessKeyId=$accessKeyId ENV secretAccessKey=$secretAccessKey ENV userPhotoFolder=$userPhotoFolder ENV bucketName=$bucketName EXPOSE $PORT CMD ["npm", "start"]
2) Для фронтенда (Vue):
FROM node:lts-alpine as build-stage WORKDIR /app COPY package*json ./ RUN npm install COPY . /app ARG PORT ARG VUE_APP_API_URL ENV PORT=$PORT ENV VUE_APP_API_URL=$VUE_APP_API_URL RUN npm run build FROM nginx:stable-alpine as production-stage COPY --from=build-stage /app/dist /usr/share/nginx/html RUN rm /etc/nginx/conf.d/default.conf COPY ./nginx.conf /etc/nginx/conf.d EXPOSE $PORT CMD ["nginx", "-g", "daemon off;"]
Здесь мы уже не просто запускаем скрипт, а, во-первых, в качестве среды указываем легковесный линукс lts-alpine вместо node, во-вторых, билдим наше приложение и папку с получеными (/app/dist) в результате файлами копируем в другую папку (/usr/share/nginx/html), которая будет запускаться при помощи nginx на сервере. И в-третьих, командой
Команды:
Создать образ:
docker build -t koa:latest .
Где, koa – название будущего имеджа.
Запушить образ:
Чтобы запушить на aws сбилдженый image, надо в сервисе Elastic Container Service создать репозиторий, после чего нажать на View push commands и воспользоваться командами, которые будут отображены в модальном окне.
Список образов:
docker images
Запущенные образы:
docker ps
Запустить образ:
docker run nameImage
С указанием портов (—rm удалит из памяти контейнер после размонтирования):
docker run docker run -it -d -p 3000:3000 --rm koa