代码之家  ›  专栏  ›  技术社区  ›  Hanny

在docker编写一个图像后运行命令

  •  0
  • Hanny  · 技术社区  · 6 年前

    我有一个docker-compose.yml,看起来像这样:

    version: '3'
    
    services:
       db:
         image: mysql:5.7
         volumes:
           - db_data:/var/lib/mysql2
         restart: always
         ports:
             - "3306:3306"
         environment:
           MYSQL_ROOT_PASSWORD: somewordpress
           MYSQL_DATABASE: wptest
           MYSQL_USER: wordpress
           MYSQL_PASSWORD: wordpress
    
       wordpress:
         volumes:
             - ./site/:/var/www/html/
             - ~/playground/certs/:/etc/ssl/certs/
         depends_on:
           - db
         image: wordpress:latest
         ports:
           - "80:80"
         restart: always
         environment:
           WORDPRESS_DB_HOST: db:3306
           WORDPRESS_DB_NAME: wptest
           WORDPRESS_DB_USER: wordpress
           WORDPRESS_DB_PASSWORD: wordpress
    
    volumes:
        db_data:
    

    如果我进入容器的bash外壳并运行 update-ca-certificates 它会找到我的密钥并安装它们,然后我就可以毫无问题地运行更新了。

    我的问题是-我可以自动执行吗?这样它会自动提取我的证书,并在容器启动后运行命令,同时仍然允许我使用 docker-compose up ?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Tengu    6 年前

    您可以创建一个简单的Dockerfile,从wordpress图像中提取,并添加一个RUN命令,执行您想要执行的任何操作。

    FROM wordpress:latest
    
    RUN your-command-here
    

    然后将docker compose更改为使用此新图像,而不是官方的wordpress图像,可能类似于: (注意构建参数)

       wordpress:
         volumes:
             - ./site/:/var/www/html/
             - ~/playground/certs/:/etc/ssl/certs/
         depends_on:
           - db
         build:
          context: .
          dockerfile: ./Dockerfile
         ports:
           - "80:80"
         restart: always
         environment:
           WORDPRESS_DB_HOST: db:3306
           WORDPRESS_DB_NAME: wptest
           WORDPRESS_DB_USER: wordpress
           WORDPRESS_DB_PASSWORD: wordpress