docker-compose 的入门使用
安装:https://docs.docker.com/compose/install/#install-composesudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-com
·
一、安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
#测试安装结果
docker-compose --version #installed test
#卸载操作
sudo rm /usr/local/bin/docker-compose #Uninstallation
二、使用
任意选择一个目录,新建docker-compose.yml文件
version: "3.6"
services:
nginx-web:
image: nginx:latest
container_name: nginx-web
ports:
- '8082:80'
volumes:
- '~/Public/nginx/www:/usr/share/nginx/html'
- '~/Public/nginx/logs:/var/log/nginx'
- '~/Public/nginx/conf:/etc/nginx/conf.d'
networks:
- my-network
safe-lock:
# image: safe-lock:v1
image: java:8
container_name: my-safe-lock
# build:
# context: /root/Public/Applications/safe.app
# dockerfile: Dockerfile
ports:
- '8088:8080'
volumes:
- '/root/Public/Applications/safe.app:/jar'
entrypoint:
- "java"
- "-Djava.security.egd=file:/dev/./urandom"
- "-jar"
- "/jar/app.jar"
networks:
- my-network
sdk:
image: sdk:v2
container_name: my-sdk
build: /root/Public/Applications/shield.app # 如果目录内只有一个Dockerfile,可以省略 context 和 dockerfile
ports:
- '8098:8099'
volumes:
- '/root/Public/Applications/shield.app:/jar'
networks:
- my-network
redis:
image: redis
container_name: redis
ports:
- '6379:6379'
volumes:
- '~/Public/redis/data:/data'
- '~/Public/redis/conf/redis.conf:/etc/redis/redis.conf'
command: redis-server /etc/redis/redis.conf
networks:
- my-network
mariadb:
image: bitnami/mariadb:latest
volumes:
- /root/wp_yunlan/mariadb:/home/user/mariadb
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=wordpress
wordpress:
image: wordpress:latest
depends_on:
- mysql
- nginx
environment: # 定义环境变量,名称已经在镜像中
- WORDPRESS_DB_PASSWORD=123456
- WORDPRESS_USERNAME=neptunemoon
- WORDPRESS_PASSWORD=123123
ports:
- '8080:80'
- '8081:443'
working_dir: /var/www/html
volumes:
- wordpress:/var/www/html
networks: # 虚拟网络
my-network:
external: true # 定义为外部资源,意味着已经在外部 docker 中存在,使用外部的
# 通过运行docker network create 命令部署
# 设置默认网络,与上面的networks.my-network.external 排斥
networks:
default:
external:
name: my-network
# 如果出现警告,可能是因为 network.external.name 在新版已经被替换为 network.name 了,使用下面的:
networks:
default:
name: my-network
- services标签下表示有4个容器,容器名可以自定义。
$ docker-compose up启动$ docker-compose stop停止$ docker-compose rm删除( ps: 在选择的目录下,会自动选择你新建的docker-compose.yml文件,不用指定 )
$ docker-compose [-f docker-compose.yml] up -d #创建并启动容器,后台运行【文件可以指定,当前目录下可以省略】
$ docker-compose [-f docker-compose.yml] down #停止并删除服务【当前目录下可省略-f】
$ docker-compose stop wordpress #停止容器运行,wordpress是yml中的一个容器
$ docker-compose rm wordpress #删除其中一个容器
$ docker-compose start wordpress #启动容器
$ docker-compose restart nginx
$ docker-compose logs --tail 10 nginx
$ docker-compose port nginx
$ docker-compose kill nginx #杀掉容器
$ docker-compose build nginx #构建或重建服务
- depends_on: 依赖项,启动顺序不重要,主要根据依赖去先启动;
- environment: 环境变量;
- ports: 端口映射;
- volumes: 文件映射;
- image: 镜像,同时可以结合【build】来使用自定义容器;
...
service: #这里举一个开源项目的例子
...
jeecg-boot-system:
build:
context: ./jeecg-boot-module-system # 这里是 Dockerfile 所在的文件夹
restart: always
container_name: jeecg-boot-system
image: jeecg-boot-system # 这里指向的是上面build构建的镜像
ports:
- 8080:8080
...
三、注意事项
- 这里着重提一下image如果是自定义Dockerfile,必须要使用
build -> context: ./xxxx指定Dockerfile文件路径,然后使用docker-compose up -d --build [标签名]运行(等同于docker build -t 镜像名 ./Dockefile构建好镜像,再运行) - (建议) 多使用docker-compose;
- (建议) 数据请尽量用volumes放在容器外;
- (建议) 不要所有服务放在一个容器里;
(完)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)