我试着使用Docker-Compose来创建Redmine

我想要去做的原因

我們打算在一個新的項目中使用Kubernetes。
由於我幾乎沒有使用過Docker,所以我想趁此機會試試使用Docker-Compose。

开发环境

以下是一个可能的中文翻译:

电脑:Windows10
虚拟平台:VirtualBox
操作系统:CentOS7
网络服务器:Nginx 1.25.2(最新版)
容器:Docker 24.0.6
:Docker-Compose 2.6.1
应用程序:Redmine 4.0.5
数据库:MySQL 5.7

请注意

    • VirtualBox周りやOS周りの設定は今回の内容から外れるので省略します。

 

    • イントラ環境等の企業内で検証を行う場合はプロキシ設定も確認すること。

 

    • 検証目的のため、rootユーザでやっています。

 

    • 証明書は自己署名証明書で行なっています。

 

    Nginxはリバースプロキシを行うために起動します。

尝试一下

安装所需的软件包

# yum -y install wget net-tools bind-utils yum-utils
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum -y install docker-ce docker-ce-cli container.io docker-buildx-plugin docker-compose-plugin docker-compose

发布证书

创建工作目录

# mkdir ~/docker-compose
# cd ~/docker-compose

生成私密密钥

# openssl genrsa -out privkey.key 2048

公司社会责任报告的发布

# openssl req -new -key privkey.key -out server.csr

颁发证书

# openssl x509 -days 3650 -req -signkey privkey.key < server.csr > fullchain.crt

启动Docker

# systemctl start docker
# systemctl enable docker
# systemctl status docker

安装Docker-Compose

# curl -SL https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# docker-compose --version

创建Docker-Compose的YAML文件。

只需要一种选项:创建YAML文件
* 这次并没有按服务进行分类。

version: "3"
services:
  proxy:
    image: nginx:latest
    ports:
      - "80:80"
      - "443:443"
    container_name: proxy
    volumes:
      - ./ssl.conf:/etc/nginx/conf.d/ssl.conf
      - ./fullchain.crt:/etc/nginx/conf.d/fullchain.crt:ro
      - ./privkey.key:/etc/nginx/conf.d/privkey.key:ro
  redmime:
    container_name: redmine
    image: redmine:4.0.5-passenger
    restart: always
    ports:
      - 8080:3000
    environment:
      TZ: Asia/Tokyo
      REDMINE_DB_MYSQL: mysql
      REDMINE_DB_DATABASE: redmine_mytheme
      REDMINE_DB_USERNAME: redmine_mytheme
      REDMINE_DB_PASSWORD: redmine_mytheme
      REDMINE_DB_ENCODING: utf8mb4
      VIRTUAL_HOST: redmine.example.com
    depends_on:
      - mysql
    volumes:
      - ./src/assets:/usr/src/redmine/public/themes/mytheme
      - ./src/plugins:/usr/src/redmine/plugins
      - ./src/themes:/usr/src/redmine/public/themes
  mysql:
    container_name: mysql
    image: mysql:5.7
    restart: always
    environment:
      TZ: Asia/Tokyo
      MYSQL_ROOT_PASSWORD: <MySQLのルートユーザのパスワード>
      MYSQL_DATABASE: redmine_mytheme
      MYSQL_USER: redmine_mytheme
      MYSQL_PASSWORD: redmine_mytheme
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_bin --general-log=true --general-log-file=/var/log/mysql/general.log
    volumes:
      - type: bind
        source: ./volume/data
        target: /dmp_data

创建用于反向代理的Nginx文件。

server {
    root /dev/null;
    server_name redmine;
    charset UTF-8;
    access_log /var/log/nginx/redmine.local.access.log;
    error_log /var/log/nginx/redmine.local.error.log;

    # Set up SSL only connections:
    listen *:443 ssl;
    ssl_certificate            /etc/nginx/conf.d/fullchain.crt;
    ssl_certificate_key        /etc/nginx/conf.d/privkey.key;

    ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:!aNULL:!EXPORT:!DES:!MD5:!PSK:!RC4';
    ssl_protocols  TLSv1.2;
    ssl_prefer_server_siphers on;
    ssl_session_cache builtin:1000 shared:SSL10m;
    ssl_session_timeout 5m;

    client_max_body_size 0;
    chunked_transfer_encoding on;


    location / {
        proxy_pass http://redmine:3000
        proxy_set_header  Host              $http_host;
        proxy_set_header  X-Real-IP         $remote_addr;
        proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
        proxy_set_header  X-Forwarded-Host  $host;
        proxy_read_timeout                  900;
        proxy_redirect default;
    }

}

server {
    listen 80;
    server_name  redmine;
    server_tokens off
    return 301 https://$http_host:$request_uri;
}

启动Docker-Compose

# docker-compose up -d

确认容器启动

# docker ps -a

Hosts文件设置

# vi /etc/hosts

※以下を追加する
<仮想マシンのIPアドレス>  <バーチャルホスト名>

请确认您的浏览器

https://<バーチャルホスト名>

附加内容

如果更改了docker-compose.yaml文件,需要执行以下命令以应用更改。

# docker-compose up -d --build
# docker-compose up -d

如果检查完毕后要清理的话,请运行以下命令。

清理集装箱

# docker-compose down --rmi all --volumes --remove-orphans

#もしくはこちら
# docker rm -f `docker ps -a -q`

如果在代理环境中进行

添加systemd单位文件

# mkdir -p /etc/systemd/system/docker.service.d
# touch /etc/systemd/system/docker.service.d/override.conf
# vi /etc/systemd/system/docker.service.d/override.conf

※こちらを追加
[Service]
Environment=HTTP_PROXY=<プロキシサーバのURLもしくはIPアドレス>:<ポート番号>
Environment=HTTPS_PROXY=<プロキシサーバのURLもしくはIPアドレス>:<ポート番号>

# systemctl daemon-reload
# systemctl restart docker

※念の為通信状態を確認し、できなければプロファイル上にプロキシ設定を確認などを行うこと
# docker run hello-world

请参考

– 安装Docker引擎

广告
将在 10 秒后关闭
bannerAds