前言
对于docker常用的compose经常是随用随写,但是时间长了总会忘记,在此记录下,以便后期翻看
一、mysql
代码如下(示例):
version: "3.0" # 切记版本号不要高于4.0,这里指的是compose的版本号
services:
mysql:
image: mysql:8.0.26
container_name: mysql # container name
ports:
- "3307:3306" # external port 3307
volumes:
- /home/docker/mysql/data:/var/lib/mysql # 数据存放在/home/docker/mysql/data
- /home/docker/mysql/conf.d:/etc/mysql/conf.d # custom config
- /home/docker/mysql/log:/var/log/mysql # log
environment:
- MYSQL_ROOT_PASSWORD=root # init pwd
- TZ=GMT%2B8
restart: always # docker重启时,容器自动重启
networks: # mysql服务一般都要做一个固定的容器IP,便于后期容器间进行通讯
default: # 此default并不是 默认 的意思,下面有声明的
ipv4_address: 181.18.0.6
privileged: true # 为此容器开启root权限,防止出现一些权限问题
command:
--default-authentication-plugin=mysql_native_password # 这个参数尽量加上,防止因为使用的mysql版本过高而导致密码加密的方式改变,进而会造成在认证时不通过
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1 # 表名统一不区分大小写
networks: # 使用的network都要进行声明
default:
external:
name: zsnet # zsnet是我自定义的网段
当我们在进行将windows下的数据迁移到linux下,可能会出现中文乱码的问题,此时可以通过在mysq的命令行以 show variables like “%char%” 查看是否是编码不统一造成的,如果是因为编码不统一造成的,可以直接将以下配置添加到mysql的配置当中去,将这段配置放在/conf.d/docker.cnf
[mysqld]
skip-host-cache
skip-name-resolve
[mysql]
default-character-set = utf8
[mysql.server]
default-character-set = utf8
[mysqld_safe]
default-character-set = utf8
[client]
default-character-set = utf8
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
二、redis
代码如下(示例):下面字段的意思在mysql差不多都解释了,在此不在进行解释
version: "3.0"
services:
redis:
image: redis:6.2.5-alpine
ports:
- "6380:6379" # 改成你需要映射出去的端口,我这里被占用了,所以使用了6380
restart: always
container_name: redis2
command: redis-server --appendonly yes # 如果不做集群,此命令就要添加上
networks:
default:
ipv4_address: 181.18.0.2
volumes:
- /home/docker/redis/data:/data
- /home/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf
- /home/docker/redis/logs:/logs
networks:
default:
external:
name: zsnet
三、 nginx
代码如下(示例):
version: "3.0"
services:
nginx:
restart: always
image: nginx:stable-alpine-perl
container_name: nginx
ports:
- 81:80
networks:
default:
ipv4_address: 181.18.0.3
volumes:
- /home/docker/nginx/nginx.conf:/etc/nginx/nginx.conf
- /home/docker/nginx/html:/usr/share/nginx/html
- /home/docker/nginx/logs:/var/log/nginx
networks:
default:
external:
name: zsnet
总结
加油噢!