在启动 AWS EC2 服务器后自动启动 Docker-compose



每次重新启动EC2服务器时,我都必须执行以下操作:sudo systemctl start docker然后docker-compose up -d启动我的所有容器.
我想创建一个 systemd 来执行此操作,按照本答案中的建议在实例开始时自动运行这两个命令。

到目前为止,我已经在/etc/systemd/system/创建了一个包含以下内容的docker_boot.service

[Unit]
Description=docker boot
After=docker.service
[Service]
Type=simple
Restart=always
RestartSec=1
User=ec2-user
ExecStart=/usr/bin/docker-compose -f docker-compose.yml up
[Install]
WantedBy=multi-user.target

我不知道我的docker_boot.service文件的内容是否正确。理想情况下,我也想在关闭实例时做docker-compose down

然后我做了:

sudo systemctl enable docker
sudo systemctl enable docker_boot

但是当我重新启动 EC2 实例时,我的 docker 映像没有运行,我该如何调试它?
请在下面找到我的docker-compose.yml文件的内容:

version: "3.5"
services:
rstudio:
environment:
- USER=username
- PASSWORD=password
image: "rocker/tidyverse:latest"
build:
context: ./Docker_RStudio
dockerfile: Dockerfile
volumes:
- /home/ec2-user/R_and_Jupyter_scripts:/home/maxence/R_and_Jupyter_scripts
working_dir: /home/ec2-user/R_and_Jupyter_scripts
container_name: rstudio
ports:
- 8787:8787
jupyter:
image: 'jupyter/datascience-notebook:latest'
ports:
- 8888:8888
volumes:
- /home/ec2-user/R_and_Jupyter_scripts:/home/joyvan/R_and_Jupyter_scripts
working_dir: /home/joyvan/R_and_Jupyter_scripts
container_name: jupyter
shiny:
image: "rocker/shiny:latest"
build:
context: ./Docker_Shiny
dockerfile: Dockerfile
container_name: shiny
ports:
- 3838:3838
nginx:
image: nginx:alpine
container_name: nginx
restart: on-failure
networks:
- net
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
ports:
- 80:80
- 443:443
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g "daemon off;"'"
depends_on:
- shinyproxy
certbot:
image: certbot/certbot
container_name: certbot
restart: on-failure
volumes:
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
shinyproxy:
image: telethonkids/shinyproxy
container_name: shinyproxy
restart: on-failure
networks:
- net
volumes:
- ./application.yml:/opt/shinyproxy/application.yml
- /var/run/docker.sock:/var/run/docker.sock
expose:
- 8080
cron:
build:
context: ./cron
dockerfile: Dockerfile
container_name: cron
volumes:
- ./Docker_Shiny/app:/home
networks:
- net
networks:
net:
name: net
  1. 在 EC2 计算机上运行此命令,以在启动时使用以下命令启用 docker 守护程序:
sudo systemctl enable docker
  1. restart: always添加到您的docker-compose.yaml文件中,如下所示:
version: "3.1"
services:
my-server:
image: .../server:0.0.1
restart: always
...

要在启动时启用 docker 守护程序,只需运行以下命令:

sudo systemctl enable docker

要在引导时运行docker-compose up,您可以在 cont-tab 中添加此行。必须使用撰写文件的绝对路径。

@reboot /usr/bin/docker-compose -f /absolute-path-to-your/docker-compose.yml up

最新更新