docker compose

方法文档 Overview of Docker Compose | Docker Documentation

安装

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

授权

chmod +x /usr/local/bin/docker-compose

使用说明:

Dockerfile 文件内容:

FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["python", "app.py"]

这告诉 Docker:

  • 从 Python 3.7 映像开始构建映像。
  • 将工作目录设置为/code.
  • 设置命令使用的环境变量flask
  • 复制requirements.txt并安装 Python 依赖项。
  • 向镜像添加元数据以描述容器正在侦听端口 5000
  • 将项目中的当前目录复制.到镜像中的workdir .
  • 将容器的默认命令设置为python app.py

docker-compose.yml

version: "3.9"
services:
  web:
    build: .  # 此处的budil . 是使用当前docker-compose.yml目录下的Dockerfile文件构建镜像,并使用
    ports:
      - "8000:5000"
  redis:
    image: "redis:alpine"  # 使用官方的redis镜像

docker-compose up -d  会运行当前目录下的docker-compose.yml文件

-d 表示守护进程方式运行

docker-compose logs 容器名或容器ID 查看日志

df -f  docker-compose-dev  up  -d  可以运行不是docker-compose.yml名称的文件, -f 为文件的路径

案例:

version: '3'

services:
  db:
    image: mariadb:latest  # 使用的镜像
    restart: always 
    environment:
      MYSQL_DATABASE: xxx
      MYSQL_ROOT_PASSWORD: xxx
      MYSQL_USER: xxx
      MYSQL_PASSWORD: xxx
    volumes:
      - ./docker/sql/mysql:/docker-entrypoint-initdb.d  # 将宿主机上的文件同步到镜像中
    ports:
      - "3306:3306"  # 映射到宿主机的端口
  web:
    build:
      context: .  # 表示使用docker-compose.yml同级目录下的Dockerfile文件构建镜像
      args:
        USER_ID: ${USER_ID:-1000}
    command: gunicorn config.wsgi:application -c /opt/pro/code/docker/gunicorn_config.py
    volumes:
      - .:/opt/pro/code  
    ports:
      - "8000:8000"
    depends_on:  # 依赖的服务
      - db    # 用docker-compose启动,这里可直接写db的服务名
    env_file:
      - .env
  master:
    build:
      context: ./docker
      dockerfile: Dockerfile-master  # 表示使用路径为 ./docker/Dockerfile-master 文件构建镜像 
    command: honcho start
    depends_on:
      - web
    environment:
      - PYTHONUNBUFFERED=true
    ports:
      - "8080:8080"

docker-compose常用命令详解

Dockerfile CMD的使用

参考:Docker:Docker Compose 详解 - 简书

解决docker通过volumes挂载文件,宿主机修改后容器内不同步,重启服务才能同步_夏夜迷的博客-CSDN博客_docker volumes 文件

docker容器之间免密登录

FROM ubuntu:18.04
MAINTAINER userl
RUN ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' && cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys \
    && sed -i 's/PermitEmptyPasswords yes/PermitEmptyPasswords no /' /etc/ssh/sshd_config  \
    && sed -i 's/PermitRootLogin without-password/PermitRootLogin yes /' /etc/ssh/sshd_config  \
    && echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config \
    && echo " UserKnownHostsFile /dev/null" >> /etc/ssh/ssh_config \
    && echo "root:root" | chpasswd \

CMD [ "sh", "-c", "sudo service ssh start; bash"]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值