1 回答

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
所以我現(xiàn)在通過(guò)以下方式解決了它:
如此處所述: https ://docs.docker.com/compose/networking/
添加到 docker-compose:
networks: default: external: name: database_default
我可以在后端以 < db_container_name >:3306 的形式連接到數(shù)據(jù)庫(kù)。
為了自動(dòng)化這個(gè)過(guò)程,我創(chuàng)建了一個(gè) .sh 腳本來(lái)處理容器啟動(dòng)時(shí)的額外設(shè)置配置步驟。但是,由于我在 config.yml 中的結(jié)構(gòu),僅使用“sed”命令很難更新,因此我創(chuàng)建了一個(gè) python 程序來(lái)更新所有配置數(shù)據(jù)。Dockerfile、docker-compose 文件、setup.sh 和 update_config.py 文件如下所示。
設(shè)置.sh:
#!/bin/bash
# Don't remove this!
# This file is used by dockerfile to replace configs
# Replace config on run
python3 update_config.py
# Start program
go run server
Dockerfile:
# Start from the latest golang base image
FROM golang:latest
WORKDIR /go/src/server
COPY ./src/server .
# Install python3 and yml compability
RUN apt-get update && apt-get install -y python3-pip
RUN python3 --version
RUN pip3 install PyYAML
# Download packages
RUN go get .
# Compile code
#RUN go build -o server
RUN go install server
# Expose ports
EXPOSE 8500
EXPOSE 8600
# ENV
ENV DB_HOST "mysql:3306"
#CHMOD setup
RUN chmod +x setup.sh
CMD ["./setup.sh"]
碼頭工人組成
version : '3'
services:
react:
build: ./ReactFrontend/
container_name: ReactFrontend
tty: true
ports:
- 4000:3000
backend:
build: ./GoBackend/
container_name: GoBackend
environment:
DB_HOST: mysql:3306 # Name or IP of DB container!
ports:
- 8500:8500
- 8600:8600
networks:
default:
external:
name: database_default
更新配置.py:
import yaml
import os
"""
DONT REMOVE
This file is used in the dockerfile!
"""
fname = "/go/src/server/config.yml"
stream = open(fname, 'r')
data = yaml.safe_load(stream)
stream.close()
# Add more updates here!
if os.environ.get('DB_HOST') is not None:
data["database"]["ip"] = os.environ['DB_HOST']
# Updated data print
print("Updated Data", data)
# Write changes to config
stream = open(fname, 'w')
yaml.dump(data, stream)
stream.close()
如果我們只希望容器運(yùn)行,現(xiàn)在可以使用的示例 docker 命令:
docker run -p 8500:8500 -p 8600:8600 --net database_default goserver
它工作正常!我們正在避免使用不必要的主機(jī)網(wǎng)絡(luò)模式!
- 1 回答
- 0 關(guān)注
- 168 瀏覽
添加回答
舉報(bào)