# docker-compose 常用设置

# docker-compose端口 ports

ports:
  - "80:80"         # 绑定容器的80端口到主机的80端口
  - "9000:80"       # 绑定容器的80端口到主机的9000端口
  - "443"           # 绑定容器的443端口到主机的任意端口,容器启动时随机分配绑定的主机端口号
1
2
3
4

端口映射可使用-p、-P来实现:

-p指定要映射的端口,一个指定端口上只可以绑定一个容器 -P将容器内部开放的网络端口随机映射到宿主机的一个端口上 实际中控制container与host之间端口映射的是docker run的-p 参数,Dockerfile中是否声明了EXPOSE影响的是-P这个参数。 所以,没有声明EXPOSE端口的情况下使用-p是有效的

# 限制容器日志大小

logging:
    options:
      max-size: 10m
1
2
3
# 默认是用json-file驱动,可以指定为其他驱动
    logging:
      driver: json-file
      options:
        max-size: 100m
        max-file: '5'
1
2
3
4
5
6

# 设置jvm内存

environment:
      JAVA_OPTS: "-Xms256m -Xmx1024m  -XX:MaxNewSize=256m"
1
2

# 设置时区

environment:
  - TZ=Asia/Shanghai

1
2
3

# 启动设置 restart policy

restart: "no"

restart: "always"

restart: "on-failure"

restart: "unless-stopped"
1
2
3
4
5
6
7

# 设置host 并使用环境变量

vim .env

# define application env
HOST=mdm.com:10.35.160.133

# yml文件使用
extra_hosts:
  - ${HOST}
1
2
3
4
5
6
7
8

# 网络设置

默认情况下,应用程序的网络名称基于Compose的工程名称,而项目名称基于docker-compose.yml所在目录的名称。 如需修改工程名称,可使用--project-name标识或COMPOSE_PORJECT_NAME环境变量。

networks:
  my_network:     #网络名称
    name: my_network # v3.5及以上支持,以下版本会创建一个名为{project-name}_my_network的网络
    driver: bridge      #桥接模式
    attachable: true      #允许独立的网络连接到该网络上
  persist:                #网络名称
    external:           #使用已存在的网络
      name: bridge2    #已创建的网络名

1
2
3
4
5
6
7
8
9

设置host模式 与宿主机共享网络

network_mode: "host"
1

# 连接外部容器

external_links:
      - test-container #当前容器可以访问 test-container,注:这个是单向的
1
2

# 指定ip地址

version: '3.7'
services:
   x1:
      image: image
      restart: always
      tty: true
      networks:
         mynet1:
            ipv4_address: 172.19.0.2
 
networks:
   mynet1:
      ipam:
         config:
         - subnet: 172.19.0.0/24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# docker-compose 使用args变量并让Dockerfile使用

vim .env

# define application env
MINIO_SERVER=http://10.35.160.134:9000

# yml文件使用 env的环境变量,并在build docker镜像时以args参数传入 file文件夹的Dockerfile文件中
    build:
      context: ../file
      args:
        MINIO_SERVER: ${MINIO_SERVER}

# Dockerfile 文件使用参数如下
ARG MINIO_SERVER

ENV MINIO_SERVER ${MINIO_SERVER}

CMD java -Djava.security.egd=file:/dev/./urandomi -Dminio.endpoint=${MINIO_SERVER} -jar file.jar


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Last Updated: 4/8/2024, 3:34:45 AM